package com.campus.help.vo;

import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;

import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
 * 劳务视图对象
 *
 * @author campus-help
 * @since 2025-09-18
 */
@Data
public class LaborVO {

    /**
     * 主键ID
     */
    private Long id;

    /**
     * 工作标题
     */
    private String jobTitle;

    /**
     * 劳务类型ID
     */
    private Long typeId;

    /**
     * 劳务类型名称
     */
    private String typeName;

    /**
     * 劳务类型图标
     */
    private String typeIcon;

    /**
     * 劳务类型颜色
     */
    private String typeColor;

    /**
     * 工作地点
     */
    private String location;

    /**
     * 工作类型（one-off：一次性，part-time：兼职，full-time：全职）
     */
    private String workType;

    /**
     * 工作类型文本
     */
    private String workTypeText;

    /**
     * 薪资
     */
    private BigDecimal salary;

    /**
     * 工作描述
     */
    private String description;

    /**
     * 要求
     */
    private String requirements;

    /**
     * 开始时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private LocalDateTime startTime;

    /**
     * 结束时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private LocalDateTime endTime;

    /**
     * 联系方式
     */
    private String contactInfo;

    /**
     * 状态
     */
    private String status;

    /**
     * 状态文本
     */
    private String statusText;

    /**
     * 招聘人数
     */
    private Integer recruitCount;

    /**
     * 已申请人数
     */
    private Integer applicationCount;

    /**
     * 发布者ID
     */
    private Long publisherId;

    /**
     * 发布者姓名
     */
    private String publisherName;

    /**
     * 发布者头像
     */
    private String publisherAvatar;

    /**
     * 发布者类型（student：学生，merchant：商户）
     */
    private String publisherType;

    /**
     * 创建时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private LocalDateTime createTime;

    /**
     * 更新时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private LocalDateTime updateTime;

    /**
     * 是否已申请（当前用户）
     */
    private Boolean hasApplied;

    /**
     * 是否为发布者（当前用户）
     */
    private Boolean isPublisher;

    /**
     * 浏览次数
     */
    private Integer viewCount;

    /**
     * 是否紧急
     */
    private Boolean isUrgent;

    /**
     * 标签
     */
    private String tags;

    // 获取工作类型文本
    public String getWorkTypeText() {
        if (workType == null) {
            return "";
        }
        switch (workType) {
            case "one-off":
                return "一次性";
            case "part-time":
                return "兼职";
            case "full-time":
                return "全职";
            default:
                return workType;
        }
    }

    // 获取状态文本
    public String getStatusText() {
        if (status == null) {
            return "";
        }
        switch (status) {
            case "recruiting":
                return "招聘中";
            case "closed":
                return "已关闭";
            case "completed":
                return "已完成";
            case "cancelled":
                return "已取消";
            default:
                return status;
        }
    }
}



